Durable Object
Claude Sonnet 4.icon with Cloudflare MCP
CloudflareのDurable Objectsは、ステート(状態)を持つサーバーレス計算環境です。
主な特徴:
🔧 基本概念
世界中でユニークな名前を持ち、どこからでもアクセス可能
自動的に地理的に近い場所に配置される
💾 ストレージ機能
最大10GBのトランザクショナル・強整合性ストレージ
SQLite(推奨)またはKey-Value形式でデータ保存
インメモリ状態でパフォーマンス最適化
🌐 用途
リアルタイム協調:チャット、マルチプレイヤーゲーム
WebSocket接続管理:長時間接続の調整
ワークフロー・キュー:アラーム機能で定期実行
集約・バッチ処理:データの蓄積と一括処理
⚡ 特徴
シングルスレッドで競合状態を回避
自動スケーリングで数百万のオブジェクト作成可能
ゼロインフラ管理で自動的にライフサイクル管理
🔒 オブジェクト間のデータ一貫性
❌ オブジェクト間の自動一貫性は無い
各Durable Objectのストレージはプライベートで他のオブジェクトからアクセス不可
オブジェクト内では強整合性だが、オブジェクト間では分散システムとして扱う必要
🏗️ 一貫性確保のアーキテクチャパターン
Control/Data Planeパターンが推奨:
Control Plane Object (1つ)
├── リソース管理・メタデータ
├── Data Plane Objectsの作成・削除
└── 全体調整
Data Plane Objects (多数)
├── 実際のデータ保持
├── ユーザーリクエスト処理
└── 個別のビジネスロジック
🗄️ 外部DBとの使い分け
Durable Objectsが適している場合
リアルタイム協調(チャット、ゲーム)
地理的分散が重要
低レイテンシ(計算とストレージが同居)
WebSocket長期接続管理
外部DB(D1等)が適している場合
大量データの横断検索
既存DBツールを使いたい
複雑なリレーショナル操作
外部ツールからのアクセス
💾 Durable Objectストレージの正体
キャッシュではなく永続ストレージ:
SQLiteベース(最大10GB/オブジェクト)
トランザクショナル・強整合性
ディスクに永続化される
Point-in-Time Recovery(30日)対応
インメモリ状態がキャッシュ的に機能:
オブジェクト休止で消失
パフォーマンス最適化用
重要データは永続ストレージに保存必須